在写cookbook的时候,发现strainer test 一直有问题
undefined method `<<’ for {}:Hash
比如network的cookbook在havana中spec_helper.rb是
1 | # README(galstrom21): This will remove any coverage warnings from dependent cookbooks |
出错的地方,是filters这个地方
调查发现,原来社区的cookbook在icehouse将chefspec的version升级到3.4了
而havana是使用的3.1.4
查看chefspec的ruby class 说明:
chefspec 3.1.4 资料[1]
1 | # File 'lib/chefspec/coverage.rb', line 16 |
这个是array
chefspec 3.4 资料[2]
1 | # File 'lib/chefspec/coverage.rb', line 28 |
已经变为hash了,所以显然如果仅仅更新GemFile,还是基于havana的spec_helper直接运行,那么就会报上面的错误,所以社区已经修改使用了如下的调用
1 | ChefSpec::Coverage.start! { add_filter 'openstack-network' } |
更多参考可以看社区的 blueprint